/**
 * 群组表迁移脚本
 * 用于初始化MySQL中的群组相关表
 * 
 * 使用方法: 
 * node group-tables-migration.js
 */

const mysqlConfig = require('./src/config/mysqlConfig');
const groupTablesConfig = require('./src/config/groupTablesConfig');

// 初始化群组表
const initializeGroupTables = async () => {
  try {
    console.log('开始初始化群组表...');
    
    // 获取连接并开始事务
    const connection = await mysqlConfig.pool.getConnection();
    await connection.beginTransaction();
    
    try {
      // 创建groups表
      console.log('创建群组表...');
      await connection.query(groupTablesConfig.groups);
      
      // 创建group_members表
      console.log('创建群组成员表...');
      await connection.query(groupTablesConfig.group_members);
      
      // 创建group_invitations表
      console.log('创建群组邀请表...');
      await connection.query(groupTablesConfig.group_invitations);
      
      // 创建group_join_requests表
      console.log('创建群组加入请求表...');
      await connection.query(groupTablesConfig.group_join_requests);
      
      // 检查表是否创建成功
      const [tables] = await connection.query(`
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = '${process.env.MYSQL_DATABASE || 'litechat'}'
        AND table_name IN ('groups', 'group_members', 'group_invitations', 'group_join_requests')
      `);
      
      console.log(`成功创建的表: ${tables.map(t => t.table_name).join(', ')}`);
      
      // 提交事务
      await connection.commit();
      console.log('群组表初始化成功！');
    } catch (err) {
      // 如果出错，回滚事务
      await connection.rollback();
      throw err;
    } finally {
      // 释放连接
      connection.release();
    }
  } catch (error) {
    console.error('群组表初始化失败:', error);
    process.exit(1);
  }
};

// 执行迁移
initializeGroupTables().then(() => {
  console.log('群组表迁移完成');
  process.exit(0);
}).catch((err) => {
  console.error('群组表迁移失败:', err);
  process.exit(1);
}); 